#ifndef _Game
#define _Game

#include <iostream>
#include <sstream>
#include <string>
#include <map>
#include "Dealer.h"
#include "Server.h"
#include "../Common/GameInfo.h"
#include "../Common/PokerTool.h"

class Dealer;
class GameInfo;
class Player;
class QtApp;
class Server;

using namespace std;

class Game
{
	public :
		/* data */
		// Nombre de même partie réalisé
		int numeroOfGame;
		//compte le nombre d'action réalisé au cours d'une partie
		int countAction;
		//Quand aucun joueur ou un seul à jouer sur un coup la variable est à 0
		//Quand les deux joueur on jouer sur un coup alors la variable est à 1
		int twoPlayerOnPlay;//deuxOnJouer = 0;
		//0= partie en cours, 1= partie fini
		int endGame;
		//Toute les cartes du jeu
		map <int,Card> cards;

		GameInfo gameinfo;
		//Dealer du jeu
		Dealer *dealer;
		//Interface de la partie
		NetWorkInterface ie;

		/* *fonction */
		string getCountActiontoString();

		// function of the singleton
		static Game * getGame(string ipj1,string ipj2,string port1,string iport2,string strategy1,string strategy2);
		void messageEndGame();
		void attributPot();
		int plusFaiblemain();
		void actionPlayer(Player &player,QtApp *app);
		void updateAllValuesPlayers();
		static Game * getGame();
		static void conversionDealer();
};

#endif
